#ifndef TDA_LISTA
#define TDA_LISTA

typedef void* tDato;
typedef void (*tFcnDestructorDato) (tDato pDato);

typedef struct Lista* tLista;
typedef struct IteradorLista* tIteradorLista;

void listaCrear (tLista* pLista, tFcnDestructorDato pFcnDestructorDato);

void listaDestruir (tLista pLista);

int listaAgregarFinal (tLista pLista, tDato pDato);

tDato listaRemover (tLista pLista, tDato pDato);

int listaVacia (tLista pLista);

tIteradorLista listaObtenerIterador (tLista pLista);

void listaLiberarIterador (tIteradorLista pIterador);

int listaIteradorMoverSiguiente (tIteradorLista pIterador);

tDato listaIteradorActual(tIteradorLista pIterador);

#endif /*TDA_LISTA*/
